Convolutional code are often used in digital communication systems to protect transmitted information from error. Turbo codes have been developed for various communications systems, such as Direct Sequence Code Division Multiple Access (DS-CDMA) standard IS-95 and Global System for Mobile Communications (GSM), that outperform conventional coding techniques. Turbo coding is efficiently utilized to correct errors in the case of communicating over an added white Gaussian noise (AWGN) channel and a Rayleigh fading channel.
Turbo codes are generally composed of two or more convolutional codes and turbo interleavers. Turbo decoding is iterative and uses a soft output decoder to decode the individual convolutional codes. Soft-decision decoding provides a significant increase in coding gain, with a minimal increase in complexity, relative to hard-decision decoding. The soft output decoder provides information on each bit position which helps the soft output decoder decode the convolutional codes. The soft output decoder is usually a MAP (maximum a posteriori) or soft output Viterbi algorithm (SOVA) decoder which requires backward and forward recursion decoding to determine the soft output over the block as is known in the art.
Typically, a transmitted outgoing code vector is described using a trellis coded modulation. At the receiver, a practical soft-decision decoder, such as a Viterbi decoder as is known in the art, uses the trellis structure to perform an optimum search for the maximum likelihood transmitted code vector. This is accomplished by determining a log-likelihood ratio (LLR) for each bit, as is known in the art. For binary phase shift keying (BPSK or 2-PSK) modulation, generation of the soft-decision metric is relatively simple, in that, since the log-likelihood ratio is linear, the received symbol is used as the soft-decision metric. Similarly, for quadrature phase shift keying (QPSK or 4-PSK) modulation, the LLR for each bit is also linear, so the real and imaginary parts of a received symbol are used as the soft-decision metrics. However, for higher order, M-ary modulations such as 8-PSK or quadrature amplitude modulation (QAM) constellations such as 16-QAM and 64-QAM where amplitude distortion becomes a problem, the LLR is more complicated.
One prior art method for generating a soft decision metric for a bit i in a log2(M) bit symbol calculates: (a) the squared Euclidean distance between the received symbol and the nearest constellation point where bit i equals 1, (b) the squared Euclidean distance between the received symbol and the nearest constellation point where bit i equals 0, and (c) the difference between these two squared distances. For each of the log2(M) bits per symbol, this requires the computation of M squared distances, plus the determination of the two minima in the M-point set, plus one subtraction. As a result, approximately M*log2(M) operations per modulation symbol are required. Clearly, as M increases, the computational complexity increases much faster than any additional throughput achieved by using more bits per symbol. Moreover, this implementation requires a significant amount of memory and processing power.
There is a need to simplify the calculation of LLR so that using higher order modulations does not require a significant increase in complexity relative to BPSK/QPSK systems. In particular, it is desirable to save calculation time and circuit power. It would also be beneficial to provide this improvement without sacrificing performance.